#ifndef EDITORCORE_ITOOL_H
#define EDITORCORE_ITOOL_H

#include "Input/EventArgs/MouseButtonEventArgs.h"
#include "Input/EventArgs/MouseMoveEventArgs.h"
#include "Input/EventArgs/MouseScrollEventArgs.h"
#include "Input/EventArgs/KeyEventArgs.h"

#include "EditorCore/Actions/IAction.h"

namespace editor_core {

	class ITool
	{
	public:
		virtual ~ITool() {}

		virtual IAction* Activate() = 0;
		virtual IAction* Deactivate() = 0;
		virtual IAction* ProcessMouseButtonPress( input::MouseButtonEventArgs* mouseButtonEventArgs ) = 0;
		virtual IAction* ProcessMouseButtonRelease( input::MouseButtonEventArgs* mouseButtonEventArgs ) = 0;
		virtual IAction* ProcessMouseMove( input::MouseMoveEventArgs* mouseMoveEventArgs ) = 0;
		virtual IAction* ProcessMouseScroll( input::MouseScrollEventArgs* mouseScrollEventArgs ) = 0;
		virtual IAction* ProcessKeyPress( input::KeyEventArgs* keyEventArgs ) = 0;
		virtual IAction* ProcessKeyRelease( input::KeyEventArgs* keyEventArgs ) = 0;
	};
}

#endif
